package com.xuelang.pipeline.artifact.app.harborv2.enums;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author xiwen.zxg
 * @since 2024/7/18
 */
public enum HarborWebhookEventTypeEnum {
    /**
     * 表示从仓库中删除构件的操作。
     */
    DELETE_ARTIFACT,

    /**
     * 表示从仓库中拉取构件的操作。
     */
    PULL_ARTIFACT,

    /**
     * 表示将构件推送到仓库的操作。
     */
    PUSH_ARTIFACT,

    /**
     * 表示超过了设定的配额限制。
     */
    QUOTA_EXCEED,

    /**
     * 表示已接近配额的阈值，但尚未超过。
     */
    QUOTA_WARNING,

    /**
     * 表示复制状态已更改。
     */
    REPLICATION,

    /**
     * 表示扫描构件或图表失败。
     */
    SCANNING_FAILED,

    /**
     * 表示扫描构件或图表已完成。
     */
    SCANNING_COMPLETED,

    /**
     * 表示扫描构件或图表的操作已停止。
     */
    SCANNING_STOPPED,

    /**
     * 表示标签保留操作已完成。
     */
    TAG_RETENTION;

    /**
     * 获取枚举列表
     *
     * @return
     */
    public static List<String> toList() {
        return Arrays.stream(HarborWebhookEventTypeEnum.values())
                .map(Enum::name)
                .collect(Collectors.toList());
    }

    /**
     * 根据名称获取枚举类
     */
    public static HarborWebhookEventTypeEnum getByName(String name) {
        return Arrays.stream(HarborWebhookEventTypeEnum.values())
                .filter(e -> e.name().equals(name))
                .findFirst()
                .orElse(null);
    }

}
